@workerdeck/ui 2.12.0 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{SessionPanel-CJwp5B3q.d.mts → SessionPanel-BVKqPs_3.d.mts} +9 -3
- package/build/index.d.mts +84 -6
- package/build/index.mjs +83 -37
- package/build/index.mjs.map +1 -1
- package/build/scoped.css +24 -3
- package/build/{use-path-links-CepFsMdW.mjs → use-path-links-BgWXmfAS.mjs} +849 -236
- package/build/use-path-links-BgWXmfAS.mjs.map +1 -0
- package/build/workspace.d.mts +19 -4
- package/build/workspace.mjs +7 -4
- package/build/workspace.mjs.map +1 -1
- package/package.json +16 -6
- package/src/components/agent/Composer.tsx +18 -13
- package/src/components/agent/SessionBrowser.tsx +24 -1
- package/src/components/agent/SessionItem.tsx +13 -3
- package/src/components/agent/SessionPanel.tsx +264 -211
- package/src/components/agent/SessionSteps.tsx +78 -27
- package/src/components/agent/SessionWorkspace.tsx +10 -1
- package/src/components/agent/ShellStrip.tsx +71 -0
- package/src/components/agent/ShellTerminal.tsx +170 -0
- package/src/components/agent/SubagentToggle.tsx +7 -1
- package/src/components/agent/TranscriptItemView.tsx +74 -1
- package/src/components/agent/scrubber-marks.ts +9 -1
- package/src/components/agent/shell-actions.tsx +25 -0
- package/src/components/agent/use-shell-frame.ts +111 -0
- package/src/components/terminal/TerminalTranscript.tsx +4 -0
- package/src/components/terminal/affordances.tsx +37 -0
- package/src/components/terminal/height.ts +14 -0
- package/src/components/terminal/items.tsx +72 -3
- package/src/components/terminal/press.tsx +5 -3
- package/src/components/terminal/scrubber.tsx +9 -1
- package/src/components/terminal/shell-row.ts +106 -0
- package/src/index.ts +12 -1
- package/src/styles/terminal.css +11 -0
- package/src/styles/theme.css +3 -0
- package/src/workspace.ts +1 -0
- package/build/use-path-links-CepFsMdW.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComponentType, ReactNode } from "react";
|
|
2
2
|
import { LucideIcon } from "lucide-react";
|
|
3
|
-
import { ModelOption, PermissionMode, PermissionRequest, SessionTask, SkillInfo, SlashCommandInfo, SubagentInfo } from "@workerdeck/protocol";
|
|
3
|
+
import { ModelOption, PermissionMode, PermissionRequest, SessionTask, ShellInfo, SkillInfo, SlashCommandInfo, SubagentInfo } from "@workerdeck/protocol";
|
|
4
4
|
import { ClientToolHandler, ConnectionState, TranscriptState, UseToolCallHostOptions } from "@workerdeck/react";
|
|
5
5
|
import { WorkerDeckClient } from "@workerdeck/client";
|
|
6
6
|
//#region src/components/agent/composer-commands.d.ts
|
|
@@ -168,7 +168,13 @@ interface SessionPanelProps {
|
|
|
168
168
|
nonce: number;
|
|
169
169
|
};
|
|
170
170
|
onSubagentChange?: (toolUseId: string | undefined) => void;
|
|
171
|
+
openShell?: {
|
|
172
|
+
shellId: string;
|
|
173
|
+
nonce: number;
|
|
174
|
+
};
|
|
175
|
+
onShellChange?: (shellId: string | undefined) => void;
|
|
171
176
|
subagents?: SubagentInfo[];
|
|
177
|
+
shells?: ShellInfo[];
|
|
172
178
|
stickyPrompt?: boolean;
|
|
173
179
|
transcriptDensity?: TranscriptDensity;
|
|
174
180
|
transcriptFont?: TranscriptFont;
|
|
@@ -216,7 +222,7 @@ type SessionVitals = {
|
|
|
216
222
|
itemCount: number;
|
|
217
223
|
totalCostUsd: number;
|
|
218
224
|
};
|
|
219
|
-
declare function SessionPanel({ client, sessionId, header, panelSurface, statusSurface, statusPlacement, onOpenPanel, onVitals, transcriptVariant, transcriptDensity, transcriptFont, affordances, terminalMetrics, scrubber, bookmarks, peerMentions, onToggleBookmark, reveal, subagents, openSubagent, onSubagentChange, stickyPrompt, controlsSurface, onControls, focusComposerOnClick, unseen, readOnly, approvalPrompts, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, onOpenFile, fontSize, className }: SessionPanelProps): import("react").JSX.Element;
|
|
225
|
+
declare function SessionPanel({ client, sessionId, header, panelSurface, statusSurface, statusPlacement, onOpenPanel, onVitals, transcriptVariant, transcriptDensity, transcriptFont, affordances, terminalMetrics, scrubber, bookmarks, peerMentions, onToggleBookmark, reveal, subagents, shells, openSubagent, onSubagentChange, openShell, onShellChange, stickyPrompt, controlsSurface, onControls, focusComposerOnClick, unseen, readOnly, approvalPrompts, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, onOpenFile, fontSize, className }: SessionPanelProps): import("react").JSX.Element;
|
|
220
226
|
//#endregion
|
|
221
227
|
export { ClientCommand as A, PERMISSION_MODES as C, PermissionModeSelectProps as D, PermissionModeSelect as E, rankPeerSessions as F, skillPrompt as I, matchClientCommand as M, mergeComposerRows as N, permissionModeChoices as O, rankComposerRows as P, useAffordances as S, PermissionModeMeta as T, FileLinkProvider as _, SessionSurfacePanel as a, TerminalAffordances as b, TranscriptDensity as c, TranscriptVariant as d, TranscriptVariantProvider as f, FileLinkOpener as g, FileLinkHandle as h, SessionPanelProps as i, ComposerRow as j, permissionModeMeta as k, TranscriptDensityProvider as l, useTranscriptVariant as m, SessionControls as n, SessionVitals as o, useTranscriptDensity as p, SessionPanel as r, TerminalMetrics as s, ApprovalPromptProps as t, TranscriptFont as u, useFileLinks as v, PermissionModeChoice as w, WithActions as x, CopyAction as y };
|
|
222
|
-
//# sourceMappingURL=SessionPanel-
|
|
228
|
+
//# sourceMappingURL=SessionPanel-BVKqPs_3.d.mts.map
|
package/build/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as formatCost, c as formatRateLimitWindow, d as formatTokens, f as friendlyModel, i as formatBytes, l as formatRateLimitWindowLong, m as toolInputPreview, o as formatCountdown, p as rateLimitWindowSeconds, r as formatAgoPrecise, s as formatDuration, u as formatRelativeTime } from "./format-eS_oUry-.mjs";
|
|
2
|
-
import { A as ClientCommand, C as PERMISSION_MODES, D as PermissionModeSelectProps, E as PermissionModeSelect, F as rankPeerSessions, I as skillPrompt, M as matchClientCommand, N as mergeComposerRows, O as permissionModeChoices, P as rankComposerRows, S as useAffordances, T as PermissionModeMeta, _ as FileLinkProvider, a as SessionSurfacePanel, b as TerminalAffordances, c as TranscriptDensity, d as TranscriptVariant, f as TranscriptVariantProvider, g as FileLinkOpener, h as FileLinkHandle, i as SessionPanelProps, j as ComposerRow, k as permissionModeMeta, l as TranscriptDensityProvider, m as useTranscriptVariant, n as SessionControls, o as SessionVitals, p as useTranscriptDensity, r as SessionPanel, s as TerminalMetrics, t as ApprovalPromptProps, u as TranscriptFont, v as useFileLinks, w as PermissionModeChoice, x as WithActions, y as CopyAction } from "./SessionPanel-
|
|
2
|
+
import { A as ClientCommand, C as PERMISSION_MODES, D as PermissionModeSelectProps, E as PermissionModeSelect, F as rankPeerSessions, I as skillPrompt, M as matchClientCommand, N as mergeComposerRows, O as permissionModeChoices, P as rankComposerRows, S as useAffordances, T as PermissionModeMeta, _ as FileLinkProvider, a as SessionSurfacePanel, b as TerminalAffordances, c as TranscriptDensity, d as TranscriptVariant, f as TranscriptVariantProvider, g as FileLinkOpener, h as FileLinkHandle, i as SessionPanelProps, j as ComposerRow, k as permissionModeMeta, l as TranscriptDensityProvider, m as useTranscriptVariant, n as SessionControls, o as SessionVitals, p as useTranscriptDensity, r as SessionPanel, s as TerminalMetrics, t as ApprovalPromptProps, u as TranscriptFont, v as useFileLinks, w as PermissionModeChoice, x as WithActions, y as CopyAction } from "./SessionPanel-BVKqPs_3.mjs";
|
|
3
3
|
import { ButtonHTMLAttributes, FunctionComponent, HTMLAttributes, InputHTMLAttributes, ReactElement, ReactNode, Ref, RefObject, TextareaHTMLAttributes } from "react";
|
|
4
4
|
import { VariantProps } from "class-variance-authority";
|
|
5
5
|
import { ClassValue } from "clsx";
|
|
@@ -10,7 +10,7 @@ import { Menu as Menu$1 } from "@base-ui/react/menu";
|
|
|
10
10
|
import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
|
|
11
11
|
import { Tooltip } from "@base-ui/react/tooltip";
|
|
12
12
|
import { toast } from "sonner";
|
|
13
|
-
import { ByModel, ContextReading, ContextUsage, FilePatch, ModelOption, PermissionRequest, PricingTable, ProfileEngine, ProfileSpend, ProjectIcon as ProjectIcon$1, QuestionBehavior, RateLimitInfo, SessionInfo, SessionRow, SessionStatus, SessionTask, SkillInfo, SlashCommandInfo, SubagentDisplay, UsageWindowRow, ViewConfig, WorkspaceScope, parseUserQuestions } from "@workerdeck/protocol";
|
|
13
|
+
import { ByModel, ContextReading, ContextUsage, FilePatch, ModelOption, PermissionRequest, PricingTable, ProfileEngine, ProfileSpend, ProjectIcon as ProjectIcon$1, QuestionBehavior, RateLimitInfo, SessionInfo, SessionRow, SessionStatus, SessionTask, ShellInfo, SkillInfo, SlashCommandInfo, SubagentDisplay, UsageWindowRow, ViewConfig, WorkspaceScope, parseUserQuestions } from "@workerdeck/protocol";
|
|
14
14
|
import { ConnectionState, PeerSessionOption, TranscriptItem, TranscriptState, UseAttachmentsResult } from "@workerdeck/react";
|
|
15
15
|
import { WorkerDeckClient } from "@workerdeck/client";
|
|
16
16
|
//#region src/components/ui/Button.d.ts
|
|
@@ -1122,18 +1122,22 @@ interface SessionBrowserProps {
|
|
|
1122
1122
|
scope?: WorkspaceScope;
|
|
1123
1123
|
activeId?: string;
|
|
1124
1124
|
activeSubagentId?: string;
|
|
1125
|
+
activeShellId?: string;
|
|
1126
|
+
now?: number;
|
|
1125
1127
|
onSelect?: (row: SessionRow) => void;
|
|
1126
1128
|
onDelete?: (row: SessionRow) => void;
|
|
1127
1129
|
onRename?: (row: SessionRow, title: string) => void;
|
|
1128
1130
|
onClearContext?: (row: SessionRow) => void;
|
|
1129
1131
|
onSelectSubagent?: (row: SessionRow, toolUseId: string) => void;
|
|
1132
|
+
onSelectShell?: (row: SessionRow, shellId: string) => void;
|
|
1133
|
+
onKillShell?: (row: SessionRow, shellId: string) => void;
|
|
1130
1134
|
emptyState?: React.ReactNode;
|
|
1131
1135
|
showControls?: boolean;
|
|
1132
1136
|
projectIcons?: Record<string, string>;
|
|
1133
1137
|
className?: string;
|
|
1134
1138
|
}
|
|
1135
1139
|
declare function rowShapeClass(active: boolean): string;
|
|
1136
|
-
declare function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, emptyState, showControls, projectIcons, className }: SessionBrowserProps): import("react").JSX.Element;
|
|
1140
|
+
declare function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, activeShellId, now, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, onSelectShell, onKillShell, emptyState, showControls, projectIcons, className }: SessionBrowserProps): import("react").JSX.Element;
|
|
1137
1141
|
//#endregion
|
|
1138
1142
|
//#region src/components/agent/SessionItem.d.ts
|
|
1139
1143
|
type SelectModifiers = {
|
|
@@ -1151,6 +1155,9 @@ interface SessionItemProps {
|
|
|
1151
1155
|
subagents?: SubagentDisplay;
|
|
1152
1156
|
onSelect?: (modifiers: SelectModifiers) => void;
|
|
1153
1157
|
onSelectSubagent?: (toolUseId: string) => void;
|
|
1158
|
+
onSelectShell?: (shellId: string) => void;
|
|
1159
|
+
onKillShell?: (shellId: string) => void;
|
|
1160
|
+
now?: number;
|
|
1154
1161
|
onRename?: (title: string) => void;
|
|
1155
1162
|
renameOn?: 'doubleClick' | 'external';
|
|
1156
1163
|
editing?: boolean;
|
|
@@ -1158,7 +1165,7 @@ interface SessionItemProps {
|
|
|
1158
1165
|
actions?: ReactNode;
|
|
1159
1166
|
className?: string;
|
|
1160
1167
|
}
|
|
1161
|
-
declare function SessionItem({ row, active, activeStepKey, showGateway, showProject, projectIcons, subagents, onSelect, onSelectSubagent, onRename, renameOn, editing, onEditingChange, actions, className }: SessionItemProps): import("react").JSX.Element;
|
|
1168
|
+
declare function SessionItem({ row, active, activeStepKey, showGateway, showProject, projectIcons, subagents, onSelect, onSelectSubagent, onSelectShell, onKillShell, now, onRename, renameOn, editing, onEditingChange, actions, className }: SessionItemProps): import("react").JSX.Element;
|
|
1162
1169
|
//#endregion
|
|
1163
1170
|
//#region src/components/agent/EngineIcon.d.ts
|
|
1164
1171
|
declare function engineMark(engine: string, model?: string): string | undefined;
|
|
@@ -1171,16 +1178,24 @@ declare function EngineIcon({ engine, model, className }: {
|
|
|
1171
1178
|
}): import("react").JSX.Element;
|
|
1172
1179
|
//#endregion
|
|
1173
1180
|
//#region src/components/agent/SessionSteps.d.ts
|
|
1181
|
+
type StepKind = 'agent' | 'shell';
|
|
1174
1182
|
type Step = {
|
|
1175
1183
|
key: string;
|
|
1184
|
+
kind: StepKind;
|
|
1176
1185
|
label: string;
|
|
1177
1186
|
noun: string;
|
|
1178
1187
|
state: 'done' | 'running' | 'failed';
|
|
1179
1188
|
detail?: string;
|
|
1180
1189
|
title: string;
|
|
1181
1190
|
onSelect: () => void;
|
|
1191
|
+
onKill?: () => void;
|
|
1182
1192
|
};
|
|
1183
|
-
|
|
1193
|
+
type ShellStepOptions = {
|
|
1194
|
+
now: number;
|
|
1195
|
+
onSelect: (shellId: string) => void;
|
|
1196
|
+
onKill?: (shellId: string) => void;
|
|
1197
|
+
};
|
|
1198
|
+
declare function sessionSteps(info: SessionInfo, onSelect: (toolUseId: string) => void, show?: SubagentDisplay, shells?: ShellStepOptions): Step[];
|
|
1184
1199
|
declare function StepRow({ step, active, onSelect }: {
|
|
1185
1200
|
step: Step;
|
|
1186
1201
|
active?: boolean;
|
|
@@ -1215,6 +1230,69 @@ declare function SubagentStrip({ task, items, label, onBack, terminal, fontSize,
|
|
|
1215
1230
|
lineHeight?: number;
|
|
1216
1231
|
}): import("react").JSX.Element;
|
|
1217
1232
|
//#endregion
|
|
1233
|
+
//#region src/components/agent/ShellStrip.d.ts
|
|
1234
|
+
interface ShellStripProps {
|
|
1235
|
+
shell: ShellInfo | undefined;
|
|
1236
|
+
label: string;
|
|
1237
|
+
cols?: number;
|
|
1238
|
+
onBack: () => void;
|
|
1239
|
+
onKill?: () => void;
|
|
1240
|
+
terminal: boolean;
|
|
1241
|
+
fontSize?: number;
|
|
1242
|
+
lineHeight?: number;
|
|
1243
|
+
}
|
|
1244
|
+
declare function ShellStrip({ shell, label, cols, onBack, onKill, terminal, fontSize, lineHeight }: ShellStripProps): import("react").JSX.Element;
|
|
1245
|
+
//#endregion
|
|
1246
|
+
//#region src/components/agent/use-shell-frame.d.ts
|
|
1247
|
+
type ShellFrameOptions = {
|
|
1248
|
+
sessionId: string | undefined;
|
|
1249
|
+
items: readonly TranscriptItem[];
|
|
1250
|
+
session: SessionInfo | undefined;
|
|
1251
|
+
shells?: readonly ShellInfo[];
|
|
1252
|
+
reveal?: {
|
|
1253
|
+
toolUseId: string;
|
|
1254
|
+
nonce: number;
|
|
1255
|
+
};
|
|
1256
|
+
openShell?: {
|
|
1257
|
+
shellId: string;
|
|
1258
|
+
nonce: number;
|
|
1259
|
+
};
|
|
1260
|
+
onShellChange?: (shellId: string | undefined) => void;
|
|
1261
|
+
};
|
|
1262
|
+
type ShellFrame = {
|
|
1263
|
+
shellId: string | undefined;
|
|
1264
|
+
enterShell: (shellId: string) => void;
|
|
1265
|
+
leaveShell: () => void;
|
|
1266
|
+
returnReveal: {
|
|
1267
|
+
toolUseId: string;
|
|
1268
|
+
nonce: number;
|
|
1269
|
+
} | undefined;
|
|
1270
|
+
shell: ShellInfo | undefined;
|
|
1271
|
+
label: string;
|
|
1272
|
+
};
|
|
1273
|
+
declare function useShellFrame(options: ShellFrameOptions): ShellFrame;
|
|
1274
|
+
//#endregion
|
|
1275
|
+
//#region src/components/agent/shell-actions.d.ts
|
|
1276
|
+
type ShellActions = {
|
|
1277
|
+
loadOutput: (shellId: string) => Promise<boolean>;
|
|
1278
|
+
verify: (shellId: string) => Promise<boolean>;
|
|
1279
|
+
kill: (shellId: string) => Promise<boolean>;
|
|
1280
|
+
open?: (shellId: string) => void;
|
|
1281
|
+
};
|
|
1282
|
+
declare function ShellActionsProvider({ value, children }: {
|
|
1283
|
+
value: ShellActions | undefined;
|
|
1284
|
+
children: ReactNode;
|
|
1285
|
+
}): import("react").JSX.Element;
|
|
1286
|
+
declare function useShellActions(): ShellActions;
|
|
1287
|
+
//#endregion
|
|
1288
|
+
//#region src/components/terminal/shell-row.d.ts
|
|
1289
|
+
declare const SHELL_GLYPH = "$";
|
|
1290
|
+
declare const SHELL_KILL_GLYPH = "✕";
|
|
1291
|
+
declare function shellInfoLabel(shell: ShellInfo): string;
|
|
1292
|
+
declare function shellTitle(shell: ShellInfo): string;
|
|
1293
|
+
declare function shellInfoFailed(shell: ShellInfo): boolean;
|
|
1294
|
+
declare function shellInfoStatusText(shell: ShellInfo): string;
|
|
1295
|
+
//#endregion
|
|
1218
1296
|
//#region src/components/agent/ProjectIcon.d.ts
|
|
1219
1297
|
declare function ProjectIcon({ icon, src, name, className }: {
|
|
1220
1298
|
icon: ProjectIcon$1 | undefined;
|
|
@@ -1272,5 +1350,5 @@ declare function copyText(value: string): Promise<boolean>;
|
|
|
1272
1350
|
declare function toolIcon(toolName: string): LucideIcon;
|
|
1273
1351
|
declare function isMutatingTool(toolName: string): boolean;
|
|
1274
1352
|
//#endregion
|
|
1275
|
-
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, type ApprovalPromptProps, Badge, type BadgeProps, Band, Blank, Button, type ButtonProps, Card, CardContent, CardHeader, CardTitle, type ChipSegment, type ClientCommand, CodeBlock, type CodeBlockProps, Composer, type ComposerFileMatch, type ComposerHandle, type ComposerProps, type ComposerRow, ContextDialog, type ContextDialogProps, ContextRing, Conversation, ConversationContent, type ConversationProps, ConversationScrollButton, CopyAction, CopyButton, type CopyButtonProps, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, type FileCardProps, type FileDeliveredItem, type FileLink, type FileLinkHandle, type FileLinkOpener, FileLinkProvider, HostFilesDialog, type HostFilesDialogProps, Ink, Input, Loader, McpDialog, type McpDialogProps, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, type MessageProps, ModelSelect, type ModelSelectProps, PERMISSION_MODES, type PathHit, type PathMatch, type PermissionModeChoice, type PermissionModeMeta, PermissionModeSelect, type PermissionModeSelectProps, PermissionPrompt, type PermissionPromptProps, ProgressRing, type ProgressRingProps, ProjectIcon, PromptArea, type PromptAreaHandle, type PromptAreaProps, PromptTokenText, QUESTION_BEHAVIORS, type QuestionBehaviorMeta, QuestionPrompt, type QuestionPromptProps, Reasoning, type ReasoningProps, Response, type ResponseProps, Row, type RowProps, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, type Segment, Select, SelectContent, SelectItem, SelectItemText, type SelectModifiers, SelectTrigger, SelectValue, SessionBrowser, type SessionBrowserProps, type SessionControls, SessionEmptyState, type SessionEmptyStateProps, SessionInfoDialog, type SessionInfoDialogProps, SessionItem, type SessionItemProps, SessionList, SessionListItem, type SessionListItemProps, type SessionListProps, SessionNamesProvider, SessionPanel, type SessionPanelProps, SessionStatusIcon, type SessionSurfacePanel, type SessionVitals, SkillNamesProvider, SkillsDialog, type SkillsDialogProps, Spinner, Splitter, type SplitterProps, StatusBar, type StatusBarProps, type Step, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, type SubagentToggleProps, TaskList, type TaskListProps, TasksDialog, type TasksDialogProps, type TerminalAffordances, TerminalDiff, TerminalItemView, TerminalMarkdown, type TerminalMarkdownProps, type TerminalMetrics, TerminalPermissionPrompt, type TerminalPermissionPromptProps, TerminalQuestionPrompt, type TerminalQuestionPromptProps, TerminalStatusLine, type TerminalStatusLineProps, TerminalSurface, type TerminalSurfaceProps, TerminalTranscript, type TerminalTranscriptProps, type TextSegment, Textarea, Tip, Toaster, type Tone, ToolCallCard, type ToolCallCardProps, type ToolCallItem, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, type TranscriptDensity, TranscriptDensityProvider, type TranscriptFont, type TranscriptProps, type TranscriptVariant, TranscriptVariantProvider, type TriggerConfig, type TriggerSuggestion, UsageDialog, type UsageDialogProps, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
|
|
1353
|
+
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, type ApprovalPromptProps, Badge, type BadgeProps, Band, Blank, Button, type ButtonProps, Card, CardContent, CardHeader, CardTitle, type ChipSegment, type ClientCommand, CodeBlock, type CodeBlockProps, Composer, type ComposerFileMatch, type ComposerHandle, type ComposerProps, type ComposerRow, ContextDialog, type ContextDialogProps, ContextRing, Conversation, ConversationContent, type ConversationProps, ConversationScrollButton, CopyAction, CopyButton, type CopyButtonProps, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, type FileCardProps, type FileDeliveredItem, type FileLink, type FileLinkHandle, type FileLinkOpener, FileLinkProvider, HostFilesDialog, type HostFilesDialogProps, Ink, Input, Loader, McpDialog, type McpDialogProps, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, type MessageProps, ModelSelect, type ModelSelectProps, PERMISSION_MODES, type PathHit, type PathMatch, type PermissionModeChoice, type PermissionModeMeta, PermissionModeSelect, type PermissionModeSelectProps, PermissionPrompt, type PermissionPromptProps, ProgressRing, type ProgressRingProps, ProjectIcon, PromptArea, type PromptAreaHandle, type PromptAreaProps, PromptTokenText, QUESTION_BEHAVIORS, type QuestionBehaviorMeta, QuestionPrompt, type QuestionPromptProps, Reasoning, type ReasoningProps, Response, type ResponseProps, Row, type RowProps, SHELL_GLYPH, SHELL_KILL_GLYPH, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, type Segment, Select, SelectContent, SelectItem, SelectItemText, type SelectModifiers, SelectTrigger, SelectValue, SessionBrowser, type SessionBrowserProps, type SessionControls, SessionEmptyState, type SessionEmptyStateProps, SessionInfoDialog, type SessionInfoDialogProps, SessionItem, type SessionItemProps, SessionList, SessionListItem, type SessionListItemProps, type SessionListProps, SessionNamesProvider, SessionPanel, type SessionPanelProps, SessionStatusIcon, type SessionSurfacePanel, type SessionVitals, type ShellActions, ShellActionsProvider, type ShellFrame, type ShellFrameOptions, type ShellStepOptions, ShellStrip, type ShellStripProps, SkillNamesProvider, SkillsDialog, type SkillsDialogProps, Spinner, Splitter, type SplitterProps, StatusBar, type StatusBarProps, type Step, type StepKind, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, type SubagentToggleProps, TaskList, type TaskListProps, TasksDialog, type TasksDialogProps, type TerminalAffordances, TerminalDiff, TerminalItemView, TerminalMarkdown, type TerminalMarkdownProps, type TerminalMetrics, TerminalPermissionPrompt, type TerminalPermissionPromptProps, TerminalQuestionPrompt, type TerminalQuestionPromptProps, TerminalStatusLine, type TerminalStatusLineProps, TerminalSurface, type TerminalSurfaceProps, TerminalTranscript, type TerminalTranscriptProps, type TextSegment, Textarea, Tip, Toaster, type Tone, ToolCallCard, type ToolCallCardProps, type ToolCallItem, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, type TranscriptDensity, TranscriptDensityProvider, type TranscriptFont, type TranscriptProps, type TranscriptVariant, TranscriptVariantProvider, type TriggerConfig, type TriggerSuggestion, UsageDialog, type UsageDialogProps, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, shellInfoFailed, shellInfoLabel, shellInfoStatusText, shellTitle, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useShellActions, useShellFrame, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
|
|
1276
1354
|
//# sourceMappingURL=index.d.mts.map
|
package/build/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as useToolTitle, $t as DialogContent, At as rankComposerRows, B as SkillsDialog, Bt as segmentsToPlainText, C as SessionInfoDialog, Ct as toolIcon, D as QuestionPrompt, Dt as useTranscriptVariant, E as QUESTION_BEHAVIORS, Et as useTranscriptDensity, F as PERMISSION_MODES, Ft as launchTrigger, G as TaskList, Gt as CopyButton, H as HostFilesDialog, Ht as Splitter, I as PermissionModeSelect, It as mentionTrigger, J as Composer, Jt as TooltipContent, K as ContextDialog, Kt as copyText, L as permissionModeChoices, Lt as usePromptAreaState, M as SubagentStrip, Mt as skillPrompt, N as PermissionPrompt, Nt as commandTrigger, O as parseUserQuestions, Ot as matchClientCommand, P as Response, Pt as hashtagTrigger, Q as ToolTitleProvider, Qt as DialogClose, R as permissionModeMeta, Rt as PromptArea, S as STATUS_META, St as isMutatingTool, T as TerminalPermissionPrompt, Tt as TranscriptVariantProvider, Ut as CodeBlock, V as McpDialog, Vt as ProgressRing, W as TasksDialog, Wt as Spinner, X as ShellActionsProvider, Xt as Dialog, Y as TerminalSurface, Yt as TooltipProvider, Z as useShellActions, Zt as DialogBody, _ as Loader, _n as Badge, _t as shellInfoStatusText, a as UsageDialog, an as MenuItem, at as previewPatch, b as ConversationScrollButton, bn as buttonVariants, bt as SessionNamesProvider, c as Transcript, cn as Select, ct as Ink, d as Message, dn as SelectItemText, dt as WithActions, en as DialogHeader, et as TerminalMarkdown, f as MessageContent, fn as SelectTrigger, ft as useAffordances, g as SessionEmptyState, gn as Input, gt as shellInfoLabel, h as TerminalTranscript, hn as Textarea, ht as shellInfoFailed, i as SessionPanel, in as MenuContent, it as TerminalDiff, j as ShellStrip, jt as rankPeerSessions, k as useShellFrame, kt as mergeComposerRows, l as ToolCallCard, ln as SelectContent, lt as Row, m as TerminalItemView, mn as PortalScope, mt as SHELL_KILL_GLYPH, n as usePathLinks, nn as DialogTrigger, nt as useFileLinks, o as UsageMeters, on as MenuSeparator, ot as Band, p as FileCard, pn as SelectValue, pt as SHELL_GLYPH, q as contextNote, qt as Tip, r as matchPath, rn as Menu, rt as parseFileLink, s as useMinuteClock, sn as MenuTrigger, st as Blank, t as resolveAgainstCwd, tn as DialogRow, tt as FileLinkProvider, u as Reasoning, un as SelectItem, ut as CopyAction, v as Conversation, vn as badgeVariants, vt as shellTitle, w as TerminalQuestionPrompt, wt as TranscriptDensityProvider, x as StatusBar, xn as cn, xt as SkillNamesProvider, y as ConversationContent, yn as Button, yt as PromptTokenText, z as ModelSelect, zt as plainTextToSegments } from "./use-path-links-BgWXmfAS.mjs";
|
|
2
2
|
import { C as rateLimitWindowSeconds, S as friendlyModel, _ as formatDuration, b as formatRelativeTime, c as tightestWindow, g as formatCountdown, h as formatCost, i as meterSeverity, m as formatBytes, o as modelLabel, p as formatAgoPrecise, r as meterColorClass, s as statusPresentation, t as contextSeverity, u as windowLabel, v as formatRateLimitWindow, w as toolInputPreview, x as formatTokens, y as formatRateLimitWindowLong } from "./status-kmsBhuFG.mjs";
|
|
3
3
|
import { Fragment, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { Anchor, ArrowRight, Atom, Beaker, BellRing, Bike, Binary, Blocks, Bot, Box, Brain, Briefcase, Brush, Bug, Building2, Cable, Camera, Car, Cat, Check, ChevronDown, CircleAlert, CircleSlash, CircuitBoard, Cloud, Code, Coffee, Cog, Compass, Container, Cpu, CreditCard, Database, Diamond, Dog, Eraser, Feather, Film, Flame, FlaskConical, Folder, Gamepad2, Gauge, Gem, Ghost, Gift, GitBranch, Globe, GraduationCap, Hammer, Hexagon, House, Image, Key, Landmark, Laptop, Layers, Leaf, Library, Lightbulb, Lock, Mail, Map as Map$1, MessageCircle, Mic, Monitor, Moon, Mountain, Music, Network, Newspaper, Notebook, Orbit, Package, Palette, PauseCircle, PenTool, Pencil, Phone, PiggyBank, Plane, Plug, Puzzle, Radar, Radio, Receipt, Rocket, Ruler, Satellite, Scale, Scissors, Search, SearchX, Server, Shield, Ship, ShoppingCart, Signal, Smartphone, Sparkles, Sprout, Square, Star, Sun, Table, Tag, Target, Telescope, Terminal, TestTube, Trash2, TreePine, Trophy, Truck, Umbrella, Users, Wallet, Wand, Waves, Webhook, Wifi, Wrench, X, Zap } from "lucide-react";
|
|
6
6
|
import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
|
|
7
7
|
import { Toaster as Toaster$1, toast } from "sonner";
|
|
8
|
-
import { STATE_LABELS, STATE_ORDER, adaptersOf, clearFilters, filterRows, groupRows, hasFacetFilter, isAgentRecord, projectLabel, projectName, projectSubpath, projectsOf, sessionLabel, subagentLabel, subsetSummary, visibleSubagents } from "@workerdeck/protocol";
|
|
8
|
+
import { STATE_LABELS, STATE_ORDER, adaptersOf, clearFilters, filterRows, groupRows, hasFacetFilter, isAgentRecord, projectLabel, projectName, projectSubpath, projectsOf, promotedShells, sessionLabel, subagentLabel, subsetSummary, visibleSubagents } from "@workerdeck/protocol";
|
|
9
9
|
//#region src/components/ui/Card.tsx
|
|
10
10
|
function Card({ className, ...props }) {
|
|
11
11
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -513,9 +513,10 @@ function SessionStatusIcon({ row, className }) {
|
|
|
513
513
|
}
|
|
514
514
|
//#endregion
|
|
515
515
|
//#region src/components/agent/SessionSteps.tsx
|
|
516
|
-
function sessionSteps(info, onSelect, show = "all") {
|
|
517
|
-
|
|
516
|
+
function sessionSteps(info, onSelect, show = "all", shells) {
|
|
517
|
+
const agents = visibleSubagents(info, show).filter(isAgentRecord).map((sub) => ({
|
|
518
518
|
key: sub.toolUseId,
|
|
519
|
+
kind: "agent",
|
|
519
520
|
label: subagentLabel(sub),
|
|
520
521
|
noun: "agent",
|
|
521
522
|
state: stepState(sub.status),
|
|
@@ -523,6 +524,23 @@ function sessionSteps(info, onSelect, show = "all") {
|
|
|
523
524
|
title: `${subagentLabel(sub)} · ${sub.toolCount} tool${sub.toolCount === 1 ? "" : "s"}`,
|
|
524
525
|
onSelect: () => onSelect(sub.toolUseId)
|
|
525
526
|
}));
|
|
527
|
+
if (shells === void 0) return agents;
|
|
528
|
+
return [...agents, ...promotedShells(info, shells.now).map((shell) => shellStep(shell, shells))];
|
|
529
|
+
}
|
|
530
|
+
function shellStep(shell, options) {
|
|
531
|
+
const status = shellInfoStatusText(shell);
|
|
532
|
+
const running = shell.status === "running";
|
|
533
|
+
return {
|
|
534
|
+
key: shell.id,
|
|
535
|
+
kind: "shell",
|
|
536
|
+
label: shellInfoLabel(shell),
|
|
537
|
+
noun: "shell",
|
|
538
|
+
state: shellInfoFailed(shell) ? "failed" : running ? "running" : "done",
|
|
539
|
+
detail: running ? void 0 : status,
|
|
540
|
+
title: `${shellTitle(shell)} · ${status}`,
|
|
541
|
+
onSelect: () => options.onSelect(shell.id),
|
|
542
|
+
onKill: running && options.onKill ? () => options.onKill?.(shell.id) : void 0
|
|
543
|
+
};
|
|
526
544
|
}
|
|
527
545
|
function stepState(status) {
|
|
528
546
|
switch (status) {
|
|
@@ -532,32 +550,49 @@ function stepState(status) {
|
|
|
532
550
|
}
|
|
533
551
|
}
|
|
534
552
|
function StepRow({ step, active = false, onSelect }) {
|
|
535
|
-
const body = step.state === "failed" ? "text-danger" : "text-success";
|
|
536
|
-
return /* @__PURE__ */ jsxs("
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
553
|
+
const body = step.state === "failed" ? "text-danger" : step.kind === "shell" ? "text-[var(--wd-shell-accent)]" : "text-success";
|
|
554
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
555
|
+
className: cn("flex w-full items-center rounded-[4px] pr-1.5", active ? "bg-row-selected" : "hover:bg-row-active", body),
|
|
556
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
557
|
+
type: "button",
|
|
558
|
+
title: step.title,
|
|
559
|
+
"aria-current": active || void 0,
|
|
560
|
+
onClick: (e) => {
|
|
561
|
+
e.stopPropagation();
|
|
562
|
+
onSelect();
|
|
563
|
+
},
|
|
564
|
+
className: "flex min-w-0 flex-1 items-center gap-1.5 py-1 pr-1 pl-3.5 text-left text-micro outline-none",
|
|
565
|
+
children: [
|
|
566
|
+
/* @__PURE__ */ jsx(StepIcon, { step }),
|
|
567
|
+
/* @__PURE__ */ jsx("span", {
|
|
568
|
+
className: "min-w-0 flex-1 truncate",
|
|
569
|
+
children: step.label
|
|
570
|
+
}),
|
|
571
|
+
step.detail ? /* @__PURE__ */ jsx("span", {
|
|
572
|
+
className: "shrink-0 tabular-nums text-fg-4",
|
|
573
|
+
children: step.detail
|
|
574
|
+
}) : null,
|
|
575
|
+
/* @__PURE__ */ jsx(ArrowRight, { className: "size-3.5 shrink-0 text-fg-4" })
|
|
576
|
+
]
|
|
577
|
+
}), step.onKill ? /* @__PURE__ */ jsx("button", {
|
|
578
|
+
type: "button",
|
|
579
|
+
"aria-label": `Kill ${step.label}`,
|
|
580
|
+
title: "Kill this shell",
|
|
581
|
+
onClick: (e) => {
|
|
582
|
+
e.stopPropagation();
|
|
583
|
+
step.onKill?.();
|
|
584
|
+
},
|
|
585
|
+
className: "shrink-0 px-1 text-micro leading-none text-fg-4 outline-none hover:text-danger",
|
|
586
|
+
children: "✕"
|
|
587
|
+
}) : null]
|
|
557
588
|
});
|
|
558
589
|
}
|
|
559
|
-
function StepIcon({
|
|
560
|
-
|
|
590
|
+
function StepIcon({ step }) {
|
|
591
|
+
if (step.kind === "shell") return /* @__PURE__ */ jsx("span", {
|
|
592
|
+
className: "w-[11px] shrink-0 text-center leading-none",
|
|
593
|
+
children: "$"
|
|
594
|
+
});
|
|
595
|
+
switch (step.state) {
|
|
561
596
|
case "running": return /* @__PURE__ */ jsx(Spinner, { className: "size-[11px] shrink-0" });
|
|
562
597
|
case "failed": return /* @__PURE__ */ jsx(CircleAlert, { className: "size-[11px] shrink-0" });
|
|
563
598
|
default: return /* @__PURE__ */ jsx(Check, { className: "size-[11px] shrink-0" });
|
|
@@ -570,7 +605,7 @@ const NO_MODIFIERS = {
|
|
|
570
605
|
ctrl: false,
|
|
571
606
|
alt: false
|
|
572
607
|
};
|
|
573
|
-
function SessionItem({ row, active = false, activeStepKey, showGateway, showProject = true, projectIcons, subagents = "active", onSelect, onSelectSubagent, onRename, renameOn = "doubleClick", editing, onEditingChange, actions, className }) {
|
|
608
|
+
function SessionItem({ row, active = false, activeStepKey, showGateway, showProject = true, projectIcons, subagents = "active", onSelect, onSelectSubagent, onSelectShell, onKillShell, now, onRename, renameOn = "doubleClick", editing, onEditingChange, actions, className }) {
|
|
574
609
|
const { info } = row;
|
|
575
610
|
const [ownEditing, setOwnEditing] = useState(false);
|
|
576
611
|
const isEditing = editing ?? ownEditing;
|
|
@@ -605,8 +640,12 @@ function SessionItem({ row, active = false, activeStepKey, showGateway, showProj
|
|
|
605
640
|
}), project]
|
|
606
641
|
}, "project"));
|
|
607
642
|
for (const extra of extras) parts.push(/* @__PURE__ */ jsx("span", { children: extra }, extra));
|
|
608
|
-
const steps = sessionSteps(info, (toolUseId) => onSelectSubagent ? onSelectSubagent(toolUseId) : onSelect?.(NO_MODIFIERS), subagents
|
|
609
|
-
|
|
643
|
+
const steps = sessionSteps(info, (toolUseId) => onSelectSubagent ? onSelectSubagent(toolUseId) : onSelect?.(NO_MODIFIERS), subagents, {
|
|
644
|
+
now: now ?? Date.now(),
|
|
645
|
+
onSelect: (shellId) => onSelectShell ? onSelectShell(shellId) : onSelect?.(NO_MODIFIERS),
|
|
646
|
+
onKill: onKillShell
|
|
647
|
+
});
|
|
648
|
+
const holdsOpenStep = steps.some((s) => s.key === activeStepKey);
|
|
610
649
|
return /* @__PURE__ */ jsxs("div", {
|
|
611
650
|
"data-slot": "session-item",
|
|
612
651
|
"data-active": active || void 0,
|
|
@@ -631,7 +670,7 @@ function SessionItem({ row, active = false, activeStepKey, showGateway, showProj
|
|
|
631
670
|
});
|
|
632
671
|
}
|
|
633
672
|
},
|
|
634
|
-
className: cn("group flex w-full cursor-pointer flex-col p-1 text-left outline-none", "rounded-[4px] transition-colors focus-visible:ring-2 focus-visible:ring-ring",
|
|
673
|
+
className: cn("group flex w-full cursor-pointer flex-col p-1 text-left outline-none", "rounded-[4px] transition-colors focus-visible:ring-2 focus-visible:ring-ring", holdsOpenStep ? "bg-row-selected-weak" : active ? "bg-row-selected" : "hover:bg-row-hover", className),
|
|
635
674
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
636
675
|
className: "flex flex-col gap-1 py-0.5 pr-0.5 pl-1.5",
|
|
637
676
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -741,7 +780,7 @@ function NameEditor({ initial, onCommit, onCancel }) {
|
|
|
741
780
|
function rowShapeClass(active) {
|
|
742
781
|
return cn("px-2 py-1.5 hover:bg-row-hover", active ? "mr-1 ml-0 rounded-r-md border-l-4 border-l-accent" : "mx-1 rounded-md");
|
|
743
782
|
}
|
|
744
|
-
function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, emptyState, showControls = true, projectIcons, className }) {
|
|
783
|
+
function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, activeShellId, now, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, onSelectShell, onKillShell, emptyState, showControls = true, projectIcons, className }) {
|
|
745
784
|
const visible = useMemo(() => filterRows(rows, config, scope), [
|
|
746
785
|
rows,
|
|
747
786
|
config,
|
|
@@ -964,6 +1003,8 @@ function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeS
|
|
|
964
1003
|
row,
|
|
965
1004
|
active: row.info.id === activeId,
|
|
966
1005
|
activeSubagentId,
|
|
1006
|
+
activeShellId,
|
|
1007
|
+
now,
|
|
967
1008
|
showGateway: gateways.length > 1 && config.groupBy !== "gateway",
|
|
968
1009
|
showProject: config.groupBy !== "project",
|
|
969
1010
|
subagents: config.subagents,
|
|
@@ -972,7 +1013,9 @@ function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeS
|
|
|
972
1013
|
onDelete,
|
|
973
1014
|
onRename,
|
|
974
1015
|
onClearContext,
|
|
975
|
-
onSelectSubagent
|
|
1016
|
+
onSelectSubagent,
|
|
1017
|
+
onSelectShell,
|
|
1018
|
+
onKillShell
|
|
976
1019
|
}, `${row.hostId}:${row.info.id}`))]
|
|
977
1020
|
}, group.key))
|
|
978
1021
|
})
|
|
@@ -983,19 +1026,22 @@ function iconSrcOf(row, icons) {
|
|
|
983
1026
|
const icon = row?.info.project?.icon;
|
|
984
1027
|
return icon?.type === "image" ? icons?.[icon.hash] : void 0;
|
|
985
1028
|
}
|
|
986
|
-
function SessionRowItem({ row, active, activeSubagentId, showGateway, showProject = true, subagents, projectIcons, onSelect, onDelete, onRename, onClearContext, onSelectSubagent }) {
|
|
1029
|
+
function SessionRowItem({ row, active, activeSubagentId, activeShellId, now, showGateway, showProject = true, subagents, projectIcons, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, onSelectShell, onKillShell }) {
|
|
987
1030
|
const { info } = row;
|
|
988
1031
|
const [editing, setEditing] = useState(false);
|
|
989
1032
|
return /* @__PURE__ */ jsx(SessionItem, {
|
|
990
1033
|
row,
|
|
991
1034
|
active: active === true,
|
|
992
|
-
activeStepKey: activeSubagentId,
|
|
1035
|
+
activeStepKey: activeShellId ?? activeSubagentId,
|
|
1036
|
+
now,
|
|
993
1037
|
showGateway,
|
|
994
1038
|
showProject,
|
|
995
1039
|
subagents,
|
|
996
1040
|
projectIcons,
|
|
997
1041
|
onSelect: () => onSelect?.(row),
|
|
998
1042
|
onSelectSubagent: onSelectSubagent ? (id) => onSelectSubagent(row, id) : void 0,
|
|
1043
|
+
onSelectShell: onSelectShell ? (id) => onSelectShell(row, id) : void 0,
|
|
1044
|
+
onKillShell: onKillShell ? (id) => onKillShell(row, id) : void 0,
|
|
999
1045
|
onRename: onRename ? (title) => onRename(row, title) : void 0,
|
|
1000
1046
|
renameOn: "external",
|
|
1001
1047
|
editing,
|
|
@@ -1161,6 +1207,6 @@ function SubagentToggle({ value, onChange, className }) {
|
|
|
1161
1207
|
})] });
|
|
1162
1208
|
}
|
|
1163
1209
|
//#endregion
|
|
1164
|
-
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, Badge, Band, Blank, Button, Card, CardContent, CardHeader, CardTitle, CodeBlock, Composer, ContextDialog, ContextRing, Conversation, ConversationContent, ConversationScrollButton, CopyAction, CopyButton, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, FileLinkProvider, HostFilesDialog, Ink, Input, Loader, McpDialog, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, ModelSelect, PERMISSION_MODES, PermissionModeSelect, PermissionPrompt, ProgressRing, ProjectIcon, PromptArea, PromptTokenText, QUESTION_BEHAVIORS, QuestionPrompt, Reasoning, Response, Row, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, Select, SelectContent, SelectItem, SelectItemText, SelectTrigger, SelectValue, SessionBrowser, SessionEmptyState, SessionInfoDialog, SessionItem, SessionList, SessionListItem, SessionNamesProvider, SessionPanel, SessionStatusIcon, SkillNamesProvider, SkillsDialog, Spinner, Splitter, StatusBar, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, TaskList, TasksDialog, TerminalDiff, TerminalItemView, TerminalMarkdown, TerminalPermissionPrompt, TerminalQuestionPrompt, TerminalStatusLine, TerminalSurface, TerminalTranscript, Textarea, Tip, Toaster, ToolCallCard, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, TranscriptDensityProvider, TranscriptVariantProvider, UsageDialog, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
|
|
1210
|
+
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, Badge, Band, Blank, Button, Card, CardContent, CardHeader, CardTitle, CodeBlock, Composer, ContextDialog, ContextRing, Conversation, ConversationContent, ConversationScrollButton, CopyAction, CopyButton, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, FileLinkProvider, HostFilesDialog, Ink, Input, Loader, McpDialog, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, ModelSelect, PERMISSION_MODES, PermissionModeSelect, PermissionPrompt, ProgressRing, ProjectIcon, PromptArea, PromptTokenText, QUESTION_BEHAVIORS, QuestionPrompt, Reasoning, Response, Row, SHELL_GLYPH, SHELL_KILL_GLYPH, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, Select, SelectContent, SelectItem, SelectItemText, SelectTrigger, SelectValue, SessionBrowser, SessionEmptyState, SessionInfoDialog, SessionItem, SessionList, SessionListItem, SessionNamesProvider, SessionPanel, SessionStatusIcon, ShellActionsProvider, ShellStrip, SkillNamesProvider, SkillsDialog, Spinner, Splitter, StatusBar, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, TaskList, TasksDialog, TerminalDiff, TerminalItemView, TerminalMarkdown, TerminalPermissionPrompt, TerminalQuestionPrompt, TerminalStatusLine, TerminalSurface, TerminalTranscript, Textarea, Tip, Toaster, ToolCallCard, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, TranscriptDensityProvider, TranscriptVariantProvider, UsageDialog, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, shellInfoFailed, shellInfoLabel, shellInfoStatusText, shellTitle, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useShellActions, useShellFrame, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
|
|
1165
1211
|
|
|
1166
1212
|
//# sourceMappingURL=index.mjs.map
|